namespace CastleSample.UI.Core
{
    public interface IModuleManager
    {
        /// <summary>
        /// Return collection with all modules loaded
        /// </summary>
        ModuleCollection Modules { get; }

        /// <summary>
        /// Load specified module.
        /// </summary>
        bool LoadModule(string moduleName);

        /// <summary>
        /// Unload a specified module.
        /// </summary>
        void UnloadModule(string moduleName);

        /// <summary>
        /// Return a flag of if the module was loaded.
        /// </summary>
        bool IsModuleLoaded(string moduelName);

        /// <summary>
        /// Load all modules defined in config file.
        /// </summary>
        void LoadAllModules();

        void StartAllModules();
    }
}